package com.wuxuan.javabase_homework.homework3;

import java.sql.SQLOutput;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

/**
 * 设计实现一个书店管理系统，包含以下功能：
 *   - 买书进货：可以添加新书到库存。
 *   - 卖书给销售者：可以卖出书籍，并更新库存。
 *   - 实时更新前三名最畅销的书籍：根据销售记录，实时更新畅销书排行榜。
 *   - 使用多个类来实现，体现面向对象的设计思想（如封装、继承、多态等）。
 *   - 提供简单的控制台交互界面，方便测试功能。
 * 要求：书店管理系统需要体现面向对象编程的核心理念。需要设计一个多类结构，清晰展示封装、继承和多态等面向对象特性。
 */

/**
 * 主操作界面
 */
public class MainScreen {
    private static Scanner sc = new Scanner(System.in);

    //1.初始化数据
    //创建集合存储所有的店铺、人
    public static List<Shop> shops = new ArrayList<Shop>();
    private static List<People> peoples = new ArrayList<>();

    public static void main(String[] args) {
        menu();
    }

    /**
     * 主界面
     */
    public static void menu() {
        while (true) {
            System.out.println("======================主界面========================");
            System.out.println("0.退出程序");
            System.out.println("1.客户端登录");
            System.out.println("2.商户端登录");
            System.out.println("3.创建新用户");
            //其实这里打印方便自己看的哈哈，实际开发不写这个
            System.out.println("4.查看所有用户");
            int choose = sc.nextInt();
            switch (choose) {
                case 0:
                    return;
                case 1:
                    login(1);
                    break;
                case 2:
                    login(2);
                    break;
                case 3:
                    register();
                    break;
                case 4:
                    travelPeople();
                    break;
                default:
                    System.out.println("请输入正确的序号！");
            }
        }
    }


    /**
     * 登录
     */
    private static void login(int index) {
        String s = null;
        if (index == 1) {
            s = "客户端";
        } else if (index == 2) {
            s = "商户端";
        } else {
            System.out.println("未知的登录端...");
        }
        System.out.println("======================" + s + "登录界面========================");
        boolean isLogin = false;
        //这里可以开发详细的登录注册功能，给People或者之后精细化的Merchant和Customer加用户名和密码，手机号，邮箱等...
        // (这里也可以之后不分为Merchant和Customer，也可以不分成两张表，就直接添加People的字段，Role之类的...方式很多，不知道哪种更好？)
        //此处的登录简化为直接传用户名！

        if (peoples.isEmpty()) {
            System.out.println("当前平台还没有用户噢~请先注册用户后再登录吧！");
            return;
        }

        while (!isLogin) {
            System.out.println("请输入用户名(输入exit可退出登录)：");
            String username = sc.next();
            if (username.equals("exit")) {
                return;
            }

            // 检查用户名是否已存在
            boolean exists = peoples.stream().anyMatch(p -> p.getName().equals(username));

            if (exists) {
                //获取此用户
                People p = peoples.stream().filter(k -> k.getName().equals(username)).findFirst().get();
                if (index == 1) {
                    //登录进入用户主界面
                    UserScreen userScreen = new UserScreen(p);
                    userScreen.menu();
                    return;
                } else if (index == 2) {
                    //登录进入商户主界面
                    MerchantScreen merchantScreen = new MerchantScreen(p);
                    merchantScreen.menu();
                    return;
                }
            } else {
                System.out.println("用户名不存在！请重新输入！");
            }
        }

    }


    /**
     * 用户注册
     */
    private static void register() {
        System.out.println("======================注册界面========================");
        boolean isRegistered = false;

        while (!isRegistered) {
            System.out.println("请输入用户名（输入exit可退出注册）：");
            String name = sc.next();

            // 检查是否退出
            if ("exit".equalsIgnoreCase(name)) {
                System.out.println("退出注册界面");
                return;
            }

            // 检查用户名是否已存在
            boolean exists = peoples.stream().anyMatch(p -> p.getName().equals(name));

            if (exists) {
                System.out.println("该用户名已存在，请重新输入用户名！");
            } else {
                // 用户名不存在，可以注册
                // 创建新用户并添加到列表
                People p = new People(name);
                peoples.add(p);

                System.out.println("恭喜您注册成功！");
                isRegistered = true;
            }
        }
    }

    /**
     * 遍历所有用户信息
     */
    private static void travelPeople() {
        System.out.println("=====================所有用户信息========================");
        if (peoples.isEmpty()) {
            System.out.println("当前平台还没有用户噢~");
        }
        for (People people : peoples) {
            System.out.println(people);
        }
    }

}
